package com.atguigu.spzx.order.service;

import com.atguigu.spzx.model.dto.h5.OrderInfoDto;
import com.atguigu.spzx.model.entity.order.OrderInfo;
import com.atguigu.spzx.model.vo.h5.TradeVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * ClassName: OrderService
 * Package: com.atguigu.spzx.order.service
 * Description:
 *
 * @Author 刘强
 * @Create 2024/7/17 17:30
 * @Version 1.0
 */
public interface OrderService {
    /**
     * 获取订单项列表和总金额
     * @return
     */
    TradeVo trade();

    /**
     * 保存订单
     * @return
     */
    Long submitOrder(OrderInfoDto orderInfoDto);

    /**
     * 根据订单id获取订单信息
     * @param orderId
     * @return
     */
    OrderInfo getById(Long orderId);

    /**
     * 立即购买 --> 订单确认页面 -> 用户的地址列表(发送到另一个服务的请求) ; 订单项信息-> 商品sku
     * @param skuId
     * @return
     */
    TradeVo buy(Long skuId);

    /**
     * 分页带条件(订单状态)查询订单列表
     * @param pageNum
     * @param pageSize
     * @param orderStatus
     * @return
     */
    PageInfo<OrderInfo> findByPage(Integer pageNum, Integer pageSize, Integer orderStatus);

    /**
     * 根据订单编号查询订单信息
     * @param orderNo
     * @return
     */
    OrderInfo getByOrderNo(String orderNo);

    /**
     * 更新订单状态
     * @param orderStatus
     */
    void updateOrderStatus(Integer orderStatus);

    /**
     * 保存订单日志
     * @param orderId
     * @param processStatus
     */
    void saveOrderLog(Long orderId, Integer processStatus);
}
